package com.tsunami.auth.service.auth;

import com.baomidou.mybatisplus.extension.service.IService;
import com.tsunami.authority.dto.auth.UserDTO;
import com.tsunami.authority.dto.auth.UserSaveDTO;
import com.tsunami.authority.dto.auth.UserUpdateDTO;
import com.tsunami.authority.dto.auth.UserUpdatePasswordDTO;
import com.tsunami.authority.entity.auth.User;
import com.tsunami.base.R;
import com.tsunami.user.model.SysUser;

import java.util.List;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author lx
 * @since 2021-09-23
 */
public interface IUserService extends IService<User> {

    /**
     * 根据用户名获取用户信息
     * @param username
     * @return
     */
    User selectByAccount(String username);

    /**
     * 分页用户列表
     * @param user
     * @return
     */
    R selectPageList(UserDTO user);

    /**
     * 保存用户
     * @param user
     * @return
     */
    User saveUser(SysUser user,UserSaveDTO data);

    /**
     * 编辑用户
     * @param user
     * @param data
     * @return
     */
    User updateUser(SysUser user,UserUpdateDTO data);

    /**
     * 修改密码
     * @param data
     * @return
     */
    Boolean updatePassword(UserUpdatePasswordDTO data);

    /**
     * 重置密码
     * @param ids
     * @return
     */
    Boolean reset(List<Long> ids);

    /**
     * 删除
     */
    boolean remove(List<Long> ids);

    /**
     * 角色查找关联用户
     * @param roleId
     * @param keyword
     * @return
     */
    List<User> findUserByRoleId(Long roleId, String keyword);
    /**
     * 修改用户最后一次登录 时间
     */
    void updateLoginTime(String account);
}
